package q926_minFlipsMonoIncr;

public class Solution_2 {
    /*
    实际上跟题解1是一样的思路 但是其中有很多可以简化的环节
    此时x0和x1则是代表结尾位置如果要翻转为0或者1时，所需要的 *最小的* 翻转次数
     */
    public int minFlipsMonoIncr(String s) {
        int x0 = 0, x1 = 0;
        char[] chars = s.toCharArray();
        for (char c : chars) {
            x1 = Math.min(x1, x0) + '1' - c;
            x0 += c - '0';
        }

        return Math.min(x0, x1);
    }
}
